# -*- coding: utf-8 -*-
"""
@Time ： 2023/9/10 21:00
@Auth ： y.h
@File ：data_analysis.py
@IDE ：PyCharm
@Motto：The sooner you start to code, the longer the program will take. —— Roy Carlson
"""

"""
常用的数据分析方法有：
    1、对比分析法；
    2、分组分析法；
    3、结构分析法；
    4、留存分析法；
    5、交叉分析法；
    6、漏斗分析法；
    7、矩阵分析法；
    8、象限分析法；
    9、趋势分析法；
    10、指标分析法；
    11、综合评价分析法。
    其中“对比分析法”是对数据进行比较以分析数据间的差异，包括静态比较和动态比较。
"""

# todo 需要改进
# 数据分析
__all__ = ["data_analysis"]

"""
def data_analysis(data_dict: dict[dict], is_show: bool):
    \"""

    :param title:
    :param data_dict: 需要分析的数据
    :type data_dict: dict[dict[]]
    :param is_show: 是否开启数据可视化
    :type is_show: bool
    :return:
    :rtype:
    \"""
    bom_dict = dict()
    pri_dict = dict()
    cost_dict = dict()
    for data_two in data_dict:

        if data_two == "BOM清单":
            bom_dict = data_dict.get(data_two)
        if data_two == "价格清单":
            pri_dict = data_dict.get(data_two)
        if data_two == "单车成本计算":
            cost_dict = data_dict.get(data_two)

    result_list = []

    for data_b in bom_dict:
        for data_p in pri_dict:

            if data_b == data_p:
                result = [pri_dict.get(data_p).get_price() * bom_dict.get(data_b).get_SZHBG_2023(),
                          pri_dict.get(data_p).get_price() * bom_dict.get(data_b).get_SZHBG_2024(),
                          pri_dict.get(data_p).get_price() * bom_dict.get(data_b).get_SZHBG_2025(),
                          pri_dict.get(data_p).get_price() * bom_dict.get(data_b).get_SZHBG_2026(),
                          pri_dict.get(data_p).get_price() * bom_dict.get(data_b).get_SZHBG_2027(),
                          pri_dict.get(data_p).get_price() * bom_dict.get(data_b).get_SZHBG_2028(),
                          pri_dict.get(data_p).get_price() * bom_dict.get(data_b).get_SZHBG_2029(),
                          pri_dict.get(data_p).get_price() * bom_dict.get(data_b).get_SZHBG_2030(),
                          pri_dict.get(data_p).get_price() * bom_dict.get(data_b).get_SZHBG_2031(),
                          pri_dict.get(data_p).get_price() * bom_dict.get(data_b).get_SZHBG_2032(),
                          pri_dict.get(data_p).get_price() * bom_dict.get(data_b).get_SZHBG_2033(),
                          pri_dict.get(data_p).get_price() * bom_dict.get(data_b).get_SZHBG_2034(),
                          pri_dict.get(data_p).get_price() * bom_dict.get(data_b).get_SZHBG_2035(),
                          pri_dict.get(data_p).get_price() * bom_dict.get(data_b).get_SZHBG_2036(),
                          pri_dict.get(data_p).get_price() * bom_dict.get(data_b).get_SZHBG_2037(),
                          pri_dict.get(data_p).get_price() * bom_dict.get(data_b).get_SZHBG_2038(),
                          pri_dict.get(data_p).get_price() * bom_dict.get(data_b).get_SZHBG_2039(),
                          pri_dict.get(data_p).get_price() * bom_dict.get(data_b).get_SZHBG_2040()]
                result_list.append(result)
    cost_list = []

    list_length = len(result_list[0])
    for i in range(0, list_length):
        temp_data = 0
        for data_list in result_list:
            temp_data += int(data_list[i])

        cost_list.append(temp_data)

    save_list = []
    for data_c, cost in zip(cost_dict, cost_list):
        save_list.append(cost_dict.get(data_c).set_cost(cost).get_entity_list())

    return save_list



"""


# 分组法
def data_group_by_query(df, group_col_name):
    return df.groupby(group_col_name)
